Technical Q&A

HW 52 - Forth 言語で「数値文字列」を「数値」に変換するには(1999 年 3 月 29 日)


Q: Forth 言語では、数値文字列はどうすれば数値に変換できますか?

A: 以下の例のように、コロンで X を定義してみてください。ここで、X の引数にはスタックでのアドレスと長さを指定します。

: x  ( addr len -- true| n false ) $number if abort" nan" then cr ." number = " . ;  ok
  

まず文字列として"123"と入力し(半角の二重引用符を含む)、それから X を入力します。

0 > "123" x
number = 123  ok
                  
この例では、X はその文字列が数値文字列であると判断したため、
出力には「123」という数値が現れています。ここで、非数値文字列を試してみましょう。 0 > " wrong" x nan ok

ここでの nan は、"not a number" の略です。では、123 という数値を入力してみましょう。

0 > 123 x
DEFAULT CATCH!, code=300 at   %SRR0: ff80bed0   %SRR1: 0000b030
 ok
                  

X にはアドレスと長さを伴った数値文字列が要求されますが、123 は単一のパラメータです。
そのため、Forth インタプリタは命令語 X の処理を行わずにスタックをクリアしています。


-- Wayne Flansburg
Worldwide Developer Technical Support

Technical Q&As | Contents
Previous Question | Next Question

To contact us, please use the Contact Us page.